Eric Huss [Sun, 6 May 2018 22:14:46 +0000 (15:14 -0700)]
Config Profiles (RFC 2282 Part 2)
Notes:
- `-Z config-profile` CLI option is required to use.
- Config values no longer reject mixed base types (integer, string, boolean) in order to support the mixed types in profiles.
bors [Wed, 30 May 2018 20:12:02 +0000 (20:12 +0000)]
Auto merge of #5552 - ehuss:config-serde, r=alexcrichton
Typed Config Access
This introduces a new API for accessing config values using serde to
automatically convert to a destination type. By itself this shouldn't
introduce any behavioral changes (except for some slight wording changes to
error messages). However, it unlocks the ability to use richer data types in
the future (such as `profile`, or `source`). Example:
```rust
let p: Option<TomlProfile> = config.get("profile.dev")?;
```
Supports environment variables when fetching structs or maps. Note that it can
support underscores in env var for struct field names, but not maps. So for
example, "opt_level" works, but not "serde_json" (example:
`CARGO_PROFILE_DEV_OVERRIDES_serde_OPT_LEVEL`). I don't have any ideas for a
workaround (though I feel this is an overuse of env vars).
It supports environment variables for lists. The value in the env var will get
appended to anything in the config. It uses TOML syntax, and currently only
supports strings. Example: `CARGO_FOO=['a', 'b']`. I did *not* modify
`get_list` to avoid changing behavior, but that can easily be changed.
bors [Mon, 28 May 2018 16:49:15 +0000 (16:49 +0000)]
Auto merge of #5587 - matklad:rustdoc-target, r=alexcrichton
Support `--target` argument in `cargo rustdoc`
We don't support `--target` in `cargo rustdoc`. Seems like an omission to me? We support it in `cargo rustc`. Discovered in https://github.com/rust-lang/cargo/pull/5543#issuecomment-392525154.
bors [Mon, 28 May 2018 09:34:35 +0000 (09:34 +0000)]
Auto merge of #5570 - alexcrichton:fix-deadlock, r=matklad
Fix an issue of deadlock in Cargo
Currently Cargo can deadlock itself via file locks in somewhat obscure
scenarios. One way to trigger this scenario is by causing the index to fail
being created, for example through an invalid `init.templatedir` configuration.
This commit takes the strategy of solving two bugs:
* First, the deadlock is fixed. This is done by manually ensuring that the
current deadlock doesn't happen by scheduling cached work to happen outside
the scope of a lock.
* Second, the initialization of the registry's index is fixed. We turn off the
usage of external templates as we don't want to use them for this internally
managed repository anyway.
bors [Sun, 27 May 2018 19:55:37 +0000 (19:55 +0000)]
Auto merge of #5572 - kngwyu:for-racer, r=alexcrichton
Make add_overrides and get_resolved_packages pub
For https://github.com/racer-rust/racer/pull/855.
Now we're planning to use cargo to resolve dependencies, but for RLS we can't write `Cargo.lock`.
So we have to call `resolve_with_previous` directly, and want to use these functions.
Alex Crichton [Sat, 26 May 2018 02:12:53 +0000 (19:12 -0700)]
Fix an issue of deadlock in Cargo
Currently Cargo can deadlock itself via file locks in somewhat obscure
scenarios. One way to trigger this scenario is by causing the index to fail
being created, for example through an invalid `init.templatedir` configuration.
This commit takes the strategy of solving two bugs:
* First, the deadlock is fixed. This is done by manually ensuring that the
current deadlock doesn't happen by scheduling cached work to happen outside
the scope of a lock.
* Second, the initialization of the registry's index is fixed. We turn off the
usage of external templates as we don't want to use them for this internally
managed repository anyway.
I'm having problem writing test for it.
The test should install binary, make commit and reinstall binary, this part is done.
To know if it was done properly we need to compare git revision of HEAD and installed binary and that's where the problems begin...
bors [Thu, 24 May 2018 18:30:29 +0000 (18:30 +0000)]
Auto merge of #5556 - alexcrichton:fix, r=matklad
Copy `--all-features` request to all workspace members
This fixes an accidental regression introduced in #5012 where the
`--all-features` CLI flag was only propagated to the "main crate" as opposed to
all workspace packages. This behavior has [already been deemed][pr] as
"basically not what you want", but for now it's best to avoid the regression.
bors [Thu, 24 May 2018 07:19:13 +0000 (07:19 +0000)]
Auto merge of #5534 - matklad:feature-workflow, r=alexcrichton
Feature workflow
Docs based on todays discussion.
@dwijnand you seem to actually read the docs, so I am curious how do you feel about it? :)
We have a **lot** of feature-requests for Cargo, but we care about long-term maintainability and backwards comparability, so we stick to the conservative side of things. This leads to a situation when there are a lot of `C-feature-request` tagged issues on the repo, but only a fraction of those are "yeah, we definitely want that in Cargo", while most are "this **could** be useful, but we are not really sure if it belongs to Cargo", and we'd love to signal which issues are "it would be awesome if you implement this" and which are "you could try to implement this, but there's no guarantee that the PR will be merged".
bors [Tue, 22 May 2018 14:08:52 +0000 (14:08 +0000)]
Auto merge of #5557 - ehuss:linux-cbfct, r=alexcrichton
Fix test failure in changing_bin_features_caches_targets for Linux.
Fixes rust-lang/rust#50962.
My theory is that while copying the binary, another thread forked with the fd
open. The copy finishes and attempts to exec before the other child execs (and
closes the writeable fd).
I was able to easily repro this on linux. I ran some stress tests of this fix
locally on linux and on appveyor, and was unable to trigger it again.
Eric Huss [Tue, 22 May 2018 11:45:46 +0000 (04:45 -0700)]
Fix test failure in changing_bin_features_caches_targets for Linux.
Fixes rust-lang/rust#50962.
My theory is that while copying the binary, another thread forked with the fd
open. The copy finishes and attempts to exec before the other child execs (and
closes the writeable fd).
I was able to easily repro this on linux. I ran some stress tests of this fix
locally on linux and on appveyor, and was unable to trigger it again.
Alex Crichton [Mon, 21 May 2018 19:57:25 +0000 (12:57 -0700)]
Copy `--all-features` request to all workspace members
This fixes an accidental regression introduced in #5012 where the
`--all-features` CLI flag was only propagated to the "main crate" as opposed to
all workspace packages. This behavior has [already been deemed][pr] as
"basically not what you want", but for now it's best to avoid the regression.
Eric Huss [Tue, 15 May 2018 04:57:47 +0000 (21:57 -0700)]
Typed Config Access
This introduces a new API for accessing config values using serde to
automatically convert to a destination type. By itself this shouldn't
introduce any behavioral changes (except for some slight wording changes to
error messages). However, it unlocks the ability to use richer data types in
the future (such as `profile`, or `source`). Example:
```rust
let p: Option<TomlProfile> = config.get("profile.dev")?;
```
Supports environment variables when fetching structs or maps. Note that it can
support underscores in env var for struct field names, but not maps. So for
example, "opt_level" works, but not "serde_json" (example:
`CARGO_PROFILE_DEV_OVERRIDES_serde_OPT_LEVEL`). I don't have any ideas for a
workaround (though I feel this is an overuse of env vars).
It supports environment variables for lists. The value in the env var will get
appended to anything in the config. It uses TOML syntax, and currently only
supports strings. Example: `CARGO_FOO=['a', 'b']`. I did *not* modify
`get_list` to avoid changing behavior, but that can easily be changed.
bors [Tue, 15 May 2018 08:20:05 +0000 (08:20 +0000)]
Auto merge of #5537 - eddyb:no-trans, r=matklad
Remove -Zno-trans test.
Needed for https://github.com/rust-lang/rust/pull/50615 (where the flag is now `-Zno-codegen`) - which revealed that the test shouldn't even exist anymore, and was accidentally added back (https://github.com/rust-lang/rust/pull/50615#issuecomment-388968326).
bors [Sun, 13 May 2018 15:25:21 +0000 (15:25 +0000)]
Auto merge of #5527 - tcr:patch-1, r=alexcrichton
Point Source Replacement to the Overriding Dependencies section
This would've saved me a minute. This mirrors a similarly helpful caveat in [the [patch] section](https://doc.rust-lang.org/cargo/reference/manifest.html#the-patch-section).
Tim Ryan [Sun, 13 May 2018 05:51:54 +0000 (01:51 -0400)]
Point Source Replacement to the Overriding Dependencies section
This would've saved me a minute. This mirrors a similarly helpful caveat in [the [patch] section](https://doc.rust-lang.org/cargo/reference/manifest.html#the-patch-section).
bors [Fri, 11 May 2018 22:55:05 +0000 (22:55 +0000)]
Auto merge of #5520 - alexcrichton:check-with-full-proc-macro, r=matklad
Fix mode generated in `maybe_lib`
The new `mode` for the library dependency is dependent on the library target
rather than the target which is the reason for the dependency on the library!
Alex Crichton [Fri, 11 May 2018 15:04:10 +0000 (08:04 -0700)]
Fix mode generated in `maybe_lib`
The new `mode` for the library dependency is dependent on the library target
rather than the target which is the reason for the dependency on the library!
bors [Thu, 10 May 2018 19:55:02 +0000 (19:55 +0000)]
Auto merge of #5301 - mshal:build-plan, r=matklad
Add --build-plan for 'cargo build'
With 'cargo build --build-plan', cargo does not actually run any
commands, but instead prints out what it would have done in the form of
a JSON data structure.
bors [Thu, 10 May 2018 19:01:06 +0000 (19:01 +0000)]
Auto merge of #5460 - ehuss:conservative-link, r=alexcrichton
Be more conservative about which files are linked to the output dir.
This changes it so that only top-level targets requested on the command-line will be included in the output directory. Dependencies are no longer included.
Eric Huss [Wed, 2 May 2018 18:18:37 +0000 (11:18 -0700)]
Be more conservative about which files are linked to the output dir.
This changes it so that only top-level targets requested on the command-line will be included in the output directory. Dependencies are no longer included.
bors [Thu, 10 May 2018 12:20:00 +0000 (12:20 +0000)]
Auto merge of #5507 - ordovicia:no-secs-frac, r=matklad
Does not print seconds fraction with minutes
As discussed in https://github.com/rust-lang/cargo/pull/5456#issuecomment-387731047,
seconds fraction seems unnecessary when the elapsed time is reported in minutes.
Mike Shal [Thu, 3 Aug 2017 14:02:00 +0000 (10:02 -0400)]
Add --build-plan for 'cargo build'
With 'cargo build --build-plan', cargo does not actually run any
commands, but instead prints out what it would have done in the form of
a JSON data structure.